<?php

	/*** 
	* extrae y ejecuta un string Array
	* return mi
	ejemplo:
		$output = 
		Array(
		    "a" => "apple",
		    "b" => "banana",
		    "c" => Array (
		            "0" => "x",
		            "1" => "y",
		            "2" => "z",
		            "3" => Array (
		                "nest" => "yes",
		                "nest2" => Array (
		                    "nest" => "some more asffjaskkd"
		                ),
		                "nest3" => "o rly?"
		            )
		        )
		);
		execute_str_array($output)
	**/
	function execute_str_array($val,$obtener=false){
		// asignamos el caracter "_" para filtrar los datos númericos de un array
		$search   = array("\n"," [","] ",'=> ',"   ");
		$replace  = array('",','"' ,'"' ,'=>"',"");

		$search2  = array('Array",','(",',')",",','  ',',) "',', )');
		$replace2 = array('Array'  ,'('  ,')'    ,''  ,'), "',')');

		$search3  = array('"Array',') "',')",');
		$replace3 = array('Array' ,'),"',')');

		$search4  = array(')"' ,',)');
		$replace4 = array('),"',')');

		$s = str_replace($search,$replace, print_r($val,true));
		$s = str_replace($search2,$replace2, $s);
		$s = str_replace($search3,$replace3, $s);
		$s = str_replace($search4,$replace4, $s);
		if (!$obtener) {
			$s = '$s = '.$s.';';
			eval($s);
			return $s;
		} else {
			return $s;
		}
	}
	
	/*** 
	* se usa para filtrar los valores en un array
	* solo se usa para filtrar los datos que van en  los reportes 
	* 
	**/
	function insert_in_array($val){
		// asignamos el caracter "_" para filtrar los datos númericos de un array
		if(@$_POST["forma"] == "excel" || @$_POST["forma"] == "csv")
			return "_ ".$val;
		else 
			return $val;
	}

	/**
	* @Func: auditoria
	* lleva el registro de los eventos efectuado en el sistema..
	**/
	function auditoria($obj,$idmodulo="",$idsubmodulo="",$nombremenu="",$accion="",$datos=""){
		$obj->id_usuario     = $_SESSION["id_user"];
		$obj->id_grupo       = $_SESSION["id_grupo"];
		$obj->id_modulo      = $idmodulo;
		$obj->id_sub_modulo  = $idsubmodulo;
		$obj->nombre_menu    = $nombremenu;
		$obj->accion         = $accion;
		$obj->ip             = $_SERVER['REMOTE_ADDR'];
		$obj->licencia       = $_SESSION["license"];
		$obj->fecha_registro = date('Y-m-d h:i:s');
		$obj->datos          = $datos;
		$obj->insert();
	}


	/**
	* @Func: horas_restringidas
	* @paramt id_dia type array: contiene la identificacion de las horas 
	* @paramt id_horas type array: contiene la identificacion de las horas
	* @paramt id_horas type string: contiene la hora acutal
	* @return true
	**/
	function horas_restringidas($id_dia,$id_horas,$hora_actual){
		//print_r($id_dia);
		//print_r($id_horas);
		// formato: 01:00:59
		$sth1 = (int)substr($hora_actual /*=date('H:i:s')*/,0,2); // obtiene las horas
		$sth2 = (int)substr($hora_actual /*=date('H:i:s')*/,3,2); // obtiene los minutos
		
		$h24 = array(0,13,14,15,16,17,18,19,20,21,22,23,12); // Hora militar
		
		$i  = 0;
		
		foreach($id_horas as $id_hora):{
			if(in_array($id_hora,$id_dia) /*and preg_match('/'.date('a').'/i',$Horas->horas[$i])*/ ):{
				
				// desde
				$d1 = (int)substr($id_horas[$i],0,2);// obtiene las horas
				$d2 = (int)substr($id_horas[$i],3,2);// obtiene los minutos
				$d3 = substr($id_horas[$i],5,2);// obtiene el medio (am,pm)
				
				// hasta
				$h1 = (int)substr($id_horas[$i],8,2);// obtiene las horas
				$h2 = (int)substr($id_horas[$i],11,2);// obtiene los minutos
				$h3 = substr($id_horas[$i],13,2);// obtiene el medio (am,pm)
				
				$d1_tmp = ($d3=='pm') ? $h24[$d1] : (($d3=='am' and $d1==12)? 24 : $d1);
				$h1_tmp = ($h3=='pm') ? $h24[$h1] : (($h3=='am' and $h1==12)? 24 : $h1);
				
				$sth1 = (($sth1==0)? 24 : $sth1);
				
				$cond1 = ((($d1_tmp <= $sth1) and ($sth1 <  $h1_tmp)) and (($d1_tmp <= 24) and ($h1_tmp <= 24))); // 1 am a 24am
				$cond2 = ((($d1_tmp <= $sth1) and ($sth1 >= $h1_tmp)) and (($d1_tmp >= 12) and ($h1_tmp <= 12))); // 11am a 13am
				$cond3 = ((($d1_tmp >= $sth1) and ($sth1 <= $h1_tmp)) and (($d1_tmp >= 12) and ($h1_tmp <= 12))); // 13pm a 11am
				$cond4 = ((($d1_tmp == $sth1) and ($sth1 == $h1_tmp)) and (($d1_tmp <= 24) and ($h1_tmp <= 24))); // 1 am a 1 am
				$cond5 = ((($d1_tmp <= $sth1) and ($sth1 == $h1_tmp)  and $h2) and (($d1_tmp <= 24) and ($h1_tmp <= 24))); // 1 am a 1 am 
				
				//$_ENV['doc']->alert($sth2.' '.date('D H:ia').' '.$Horas->horas[$i].' || '.($d1) .' '. $sth1 .' '. ($h1).' || '.($d1_tmp) .' '. $sth1 .' '. ($h1_tmp).' || '.($cond1).' || '.(@$cond2).' || '.($cond3).' || '.($cond4).' || '.($cond5));
					
				if($cond1 or $cond2 or $cond3 or $cond4 or $cond5):{

					$sth2_tmp = $sth2;
					//$modo="";
					
					if($d2==0 and $h2==0){$d2_tmp = 0 ;$h2_tmp = 60;} // 1:00pm a 2:00pm 
					
					// 1:15pm a 1:30pm  ?  1:30pm a 2:30pm  ?  1:30pm a 3:30pm
					if($d1_tmp == $sth1 and $h1_tmp == $sth1){
						//$modo = ' $d1_tmp == $sth1 and $h1_tmp == $sth1';
						if($d2 <= $sth2){
							$d2_tmp = $sth2; $h2_tmp = $h2;
						}else{
							$d2_tmp = 60; $h2_tmp = 60; $sth2 = 60;
						}
					}elseif($d1_tmp == $sth1 and $h1_tmp != $sth1){
						//$modo='$d1_tmp == $sth1 and $h1_tmp != $sth1';
						if($d2 <= $sth2){
							$d2_tmp = $sth2; $h2_tmp = 60;
						}else{
							$d2_tmp = 60; $h2_tmp = 60; $sth2 = 60;
						}
					}elseif($d1_tmp != $sth1 and $h1_tmp == $sth1){
						//$modo='$d1_tmp != $sth1 and $h1_tmp == $sth1';
						$d2_tmp = $sth2; $h2_tmp = $h2;
					}else{
						//$modo='default';
						$d2_tmp = $sth2; $h2_tmp = 60;
					}
					
					$cond1 = ((($d2_tmp <= $sth2) and ($sth2 < $h2_tmp) and ($d2 == 0) and ($h2 == 0)) and (($d2_tmp <= 60) and ($h2_tmp <= 60))); // 00 a 00
					$cond2 = ((($d2_tmp >= $sth2) and ($sth2 < $h2_tmp) and ($d2 != 0) and ($h2 != 0)) and (($d2_tmp <= 60) and ($h2_tmp <= 60))); // 30 a 30
					$cond3 = ((($d2_tmp <= $sth2) and ($sth2 < $h2_tmp) and ($d2 != 0) and ($h2 == 0)) and (($d2_tmp <= 60) and ($h2_tmp <= 60))); // 30 a 00
					$cond4 = ((($d2_tmp <= $sth2) and ($sth2 < $h2_tmp) and ($d2 == 0) and ($h2 != 0)) and (($d2_tmp <= 60) and ($h2_tmp <= 60))); // 00 a 30
					
					//$_ENV['doc']->alert($Horas->horas[$i].' '.date('D H:ia').' || '.($d2_tmp) .' '. $sth2 .' '. ($h2_tmp).' || '.$d2.' '.$sth2_tmp.' '. $h2.' || '.$sth1.' '. $h1_tmp.' || '.($cond1).' || '.($cond2).' || '.($cond3).' || '.($cond4).' || '.($modo));
					
					if($cond1 or $cond2 or $cond3 or $cond4):{
						
						//$_ENV['doc']->alert(1);
						return true;
						break;
					
					}endif;
						
				}endif;

			}endif;
			$i++;
			//$_ENV['doc']->create();
		}endforeach;
	}

/**
* @Func: str_center_precio
* Nota: centra los caracteres que son pasado por los parametros 1 y 2
* el string del parametro 2 es insertado por el lado izquierdo del string del parametro 1
* el string del parametro 3 es insertado por el lado derecho del string del parametro 1
* @return String
**/
function str_center_precio($string="",$str_left="",$str_right=""){
		  return $string = $str_left.substr($string,strlen($str_left),-strlen($str_right)).$str_right;
}

/**
* @Func: escape_line
* Nota: Escapa los salto de line "\n" para poder imprimir en un textarea
* y si seleccionamos para escapar para un script de escapa lo siguiente
* "\n" salto de linea, "\t" tabulador, "\r" retorno de carro...
* @return Array
**/
function escape_line($string,$line_script=false){
	if(count($a_string = explode("\n",$string)) >= 2 ):{
		
		$n=0;
		foreach($a_string as $str):{
			if(!$line_script):{
				$n++;
				$line=($n<count($a_string))?"\\n":"";
				if($str):{
					@$str_tmp .= $str.$line; 
				}endif;
			}else:{
				for($i=0;$i<strlen($str);$i++):{
					if(preg_match('/([^\\t\\r\\n])/i',$str[$i],$COINCIDEN)){
						@$str_tmp .= $str[$i];
					}
				}endfor;
			}endif;	
		}endforeach;
		$string=$str_tmp;
	}endif;
	return $string;
}

/**
* Func: str_center_factura 
* Nota: Centra los Caracteres que se van a imprimir en la factura...
**/
function str_center_factura($p_str="",$lenght=41){
		  $space="\n";
		  $n=0;
		  foreach($p_str = explode("\n",$p_str) as $str):{
					 $n++;
					 $space = "";
					 if($str):{
								for($i=0;$i<floor(($lenght-strlen($str))/2);$i++):{
										  $space.= " ";
								}endfor;
					 }endif;
					 @$str_temp .= $space.$str.(($n<(count($p_str)))?"\n":"");
		  }endforeach;
		  return $str_temp;
}

function float_to_mysql($num_float){
		  $num_float = explode(',',$num_float);
		  if(@$num_float[1]){
					 $num_float[0] = str_replace('.','',$num_float[0]);
					 return $num_float[0].'.'.$num_float[1];
		  }else{
					 return $num_float[0];
		  }
}

function print_ajax($url, $conector = "msj_err", $varsValor = ""){
		  echo '<script type="text/javascript">setTimeout(function(){controller("'.utf8_encode($url).'","'.utf8_encode($varsValor).'","'.$conector.'");},20);</script>';
}

function print_controller($url, $varsValor = "", $conector = "conten_temp_script"){
		  echo '<script type="text/javascript">setTimeout(function(){controller("'.utf8_encode($url).'","'.utf8_encode($varsValor).'","'.$conector.'");},20);</script>';
}

function print_input($name, $value = ""){
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$name.'").attr({"value":"'.utf8_encode($value).'"});},20);</script>';
}

function print_alert($value = ""){
		  echo '<script type="text/javascript">setTimeout(function(){alert(\''.str_replace("'","\\'",utf8_encode($value)).'\');},20);</script>';
}

function print_display($conector,$value = "block"){
		  // $value = "block"
		  // $value = "none"
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$conector.'").css("display","'.$value.'");},20);</script>';
}

function print_out($string, $conector = "conten_temp_script"){
		  // * Si en la variable $string contiene un script para imprimir hay que escapar la etiqueta de cierre "<\/script>"
		  // * No dejar caracter de tipo "Enter" o saltos de lineas en el String a imprimir
		  // * Utilizar los caracteteres comilla simpre ( ' ) para crear los String a enviar... Ejm: 'string...'
		  // * Si dentro de String contiene comillas simpre ( ' ) escaparlas con tres barras invertidas... Ejm: '\\\'string...\\\''
		  $search  = array("\\","</script>");
		  $replace = array("","<\/script>");
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$conector.'").html(\''.escape_line(@utf8_encode(str_replace("'","\\'",str_replace($search,$replace,$string))),true).'\');},20);</script>';
}

function print_list($string, $conector = "conten_temp_script",$insert = "fisrt",$exist_id="",$msj_exist="El Producto ya fue agredado..."){
		  // * $insert = "fisrt" => Insertar por el principio
		  // * $insert = "final" => Insertar por el final
		  // * $exist_id = ""    => Nombre de la id a buscar
		  // * Si en la variable $string contiene un script para imprimir hay que escapar la etiqueta de cierre "<\/script>"
		  // * No dejar caracter de tipo "Enter" o saltos de lineas en el String a imprimir
		  // * Utilizar los caracteteres comilla simpre ( ' ) para crear los String a enviar... Ejm: 'string...'
		  // * Si dentro de String contiene comillas simpre ( ' ) escaparlas con tres barras invertidas... Ejm: '\\\'string...\\\''
		  $function='';
		  $search  = array("\\","</script>");
		  $replace = array("","<\/script>");
		  if($insert=="fisrt"){$function='prepend';}
		  if($insert=="final"){$function='append';}
		  if(!$function){return;}
		  echo 
		  '<script type="text/javascript">'.
					 'setTimeout('.
								'function(){'.
										  'try{'.
													 'if(document.getElementById(\''.$exist_id.'\')){'.
																'alert(\''.$msj_exist.'\');'.
																'return false;'.
													 '};'.
										  '}catch(err){}'.
										  'jQuery("#'.$conector.'").'.$function.'(\''.escape_line(@utf8_encode(str_replace("'","\\'",str_replace($search,$replace,$string))),true).'\');'.
								'},'.
								'20'.
					 ');'.
		  '</script>';

}

function print_msj_ok($msj_string, $conector = "",$insert = "fisrt"){
		  $function='';
		  if(!$conector){$conector='msj_err';}
		  if($insert=="fisrt"){$function='prepend';}
		  if($insert=="final"){$function='append';}
		  if(!$function){return;}
		  $search = array("[ok]","'");
		  $replace = array(@utf8_encode($msj_string),"\'");
		  $msj = '<div class="color_verde"    style="margin: 5px 0 0 10px;"><img style="margin:0 5px 0 0" src="../../../img/tick_16.png"/>[ok]</div>';
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$conector.'").'.$function.'(\''.str_replace($search,$replace,$msj).'\');},20);</script>';
}

function print_msj_err($msj_string, $conector = "",$insert = "fisrt"){
		  $function='';
		  if(!$conector){$conector='msj_err';}
		  if($insert=="fisrt"){$function='prepend';}
		  if($insert=="final"){$function='append';}
		  if(!$function){return;}
		  $search = array("[err]","'");
		  $replace = array(@utf8_encode($msj_string),"\'");
		  $msj = '<div class="color_rojo"   style="margin: 5px 0 0 10px;"><img style="margin:0 5px 0 0" src="../../../img/exclamation.png"/>[err]</div>';
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$conector.'").'.$function.'(\''.str_replace($search,$replace,$msj).'\');},20);</script>';
}

function print_msj_warn($msj_string, $conector = "",$insert = "fisrt"){
		  $function='';
		  if(!$conector){$conector='msj_err';}
		  if($insert=="fisrt"){$function='prepend';}
		  if($insert=="final"){$function='append';}
		  if(!$function){return;}
		  $search = array("[warn]","'");
		  $replace = array(@utf8_encode($msj_string),"\'");
		  $msj = '<div class="color_naranja" style="margin: 5px 0 0 10px;"><img style="margin:0 5px 0 0" src="../../../img/warning_16.png"/>[warn]</div>';
		  echo '<script type="text/javascript">setTimeout(function(){jQuery("#'.$conector.'").'.$function.'(\''.str_replace($search,$replace,$msj).'\');},20);</script>';
}

function cambiaf_a_normal($fecha){
			if(!$fecha) return "";
			@ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha);
			$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1];
			return $lafecha;
}

function cambiaf_a_mysql($fecha){
			if(!$fecha) return "";
			@ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
			$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
			return $lafecha;
}

function queBrowser() {
	 $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';  

	 if(strpos($user_agent, 'Chrome') !== false) {
		  $browser = '<!-- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -->';
	 }else{
		  $browser = '<!-- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> -->';
	 }
	 echo   $browser;
	 return $browser;
}


/*** 
* encripta y desencripta string
**/
class Encrypt {
    private $skey = "abcd"; // you can change it
    private function safe_b64encode($s) { return str_replace(array('+','/','='),array('-','_',''),base64_encode($s)); }
    private function safe_b64decode($s) { return base64_decode($d .= substr('====', strlen($d = str_replace(array('-','_'),array('+','/'),$s)) % 4)); }
    public  function encode($value){ if(!$value){return false;} return trim($this->safe_b64encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $value, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); }
    public  function decode($value){ if(!$value){return false;} return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $this->safe_b64decode($value), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); }
}


/**
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////// Funcion Formulario ////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
**/


function isSpecialChar($valor){
	return preg_match("/[\"'?=\{\}\[\]\\\|%]+/",$valor,$matches);
};

function valEmail($valor){
	return preg_match("/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+(.[a-z]{2,3})$/",strtolower($valor),$matches);
};

function isIP($valor){
	return preg_match("/^([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})$/",$valor,$matches); 
};

function isRIF($valor){
	return preg_match("/^[JVEGLjvegl]{1}-[0-9]+-?[0-9]{1}$/",$valor,$matches); 
};


function formulario($form="",$ban_echo=0,$ban_exit=1){
	$_POST = $_REQUEST;
	if(!$form) $form = $_REQUEST;
  $post="";
  $request="";
	$len = count($form);
	$val;
	$val2;
	$ban = false;
	$xan = false;
	$banFecha = false;
	$banFecha2= false;
	
	$errorCampos2;
	$errorCampos3 = "Los campos no deben contener los siguientes caracteres especiales: \" \' ? = { } [ ] \\ | / % \\n\\n valor ingresado: ";
	$errorCampos4 = "El valor del campo IP es incorrecto: \\n\\n valor ingresado: ";
	$errorCampos5 = "El valor del campo RIF es incorrecto: \\r\\r\\r\\n ej: V-0000000-0 \\r\\r\\r\\n ej: E-0000000-0 \\r\\r\\r\\n ej: G-0000000-0 \\r\\r\\r\\n ej: J-0000000-0 \\n\\n valor ingresado: ";
	$errorCampos6 = "Error de dato en campo Numerico \\r\\r\\r\\n ej:123456789 \\n\\n valor ingresado: ";
	$errorCampos7 = "El valor del campo CORREO es incorrecto \\r\\r\\r\\n ej:gpedro@hotmail.com \\n\\n valor ingresado: ";
	$errorCampos8 = "Error de dato en campo con Puntos Flotante \\r\\r\\r\\n ej:12.3456789 \\r\\r\\r\\n ej:123456.789 \\n\\n valor ingresado: ";
	$campo  = "";
	$clave1 = "";
	$clave2 = "";
	$valor1 = "";
	$valor2 = "";
	$errer  = "";

	foreach($form as $form_index => $form_val):{
		# Descomponemos el nombre del campo INPUT tomada de la VIEW
		# El nombre se descompone en tres segmentos
		# El primero 1?: indica el nombre
		# El segundo 2?: indica el tipo de campo. Los tipos de campos son:
		#    "i"  : entero
		#    "fl" : campos con puntos Flotantes o con Fracciones
		#    "t"  : campos textos
		#    "ip" : IP (Valida si la ip es correcta)
		#    "rif": RIF (Valida si la RIF es correcta)
		#    "spc": Special Char (Con caracteres especiales)
		#    "r"  : Radio Button
		#    "cb" : CheckBox
		#    "s"  : campos select option
		#    "sm" : campos select option multiple
		#    "c"  : campos claves o de contrase?as
		#    "cf" : comparar fechas // compara que el segundo campo no sea menor que el primero
		#    "e"  : campos email
		# El tercero 3?: indica si el campo es requerido o no. 
		#    Los valores son: 1 (es requerido) o 0 (no es requerido)

		$default = false;

		$errorCampos = "Informe de Error:\\n\\n";

		$val  = explode("_",$form_index); 

		$errer = @$_REQUEST[ "Error" . substr($val[0], 4).$val[1].$val[2] ];
		if(!preg_match('/Core/i',$val[ 0 ],$match)){
			@$val[1] = "";
		}
		switch(strtolower(@$val[1])){
			// validar si el campos es Numerico
			case "i": 
				if($val[2] == "1"):{
					if(trim($form_val) != ""){
						if(is_numeric($form_val) && trim($form_val) != ""){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else:{
					if($val[2] == "0"){
						if(trim($form_val) != ""){
							if(is_numeric(trim($form_val))){
								$xan = $ban = true;
							}else{
								$ban = false;
								$xan = true;
							}
						}
					}
				}endif;
				if (!$ban and $xan) { $errorCampos .= $errorCampos6 . $form_val; }
			break;

			//campos con puntos Flotantes o con Fracciones...
			case "fl": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(is_float((float)$form_val) && trim($form_val) != ""){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						if(trim($form_val) != ""){
							if(is_float((float)$form_val)){
								$xan = $ban = true;
							}else{
								$ban = false;
								$xan = true;
							}
						}
					}
				}
				if (!$ban and $xan) { $errorCampos .= $errorCampos8 . $form_val; }
			break;

			//campos textos
			case "t": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(!isSpecialChar($form_val)){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						if(!isSpecialChar(trim($form_val))){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}
				}
				if (!$ban and $xan) { $errorCampos .= $errorCampos3 . str_replace("'", "\\'", $form_val); }
			break;

			//IP (Valida si la ip es correcta)
			case "ip": 
				//alert($val[0]+" = "+$form_val);
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(isIP($form_val)){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						if(trim($form_val) != ""){
							if(isIP($form_val)){
								$xan = $ban = true;
							}else{
								$ban = false;
								$xan = true;
							}
						}
					}
				}
				if (!$ban and $xan) { $errorCampos .= $errorCampos4 . $form_val; }
			break;

			//RIF (Valida si la RIF es correcta)
			case "rif": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(isRIF(trim($form_val))){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						if(trim($form_val) != ""){
							if(isRIF(trim($form_val))){
								$xan = $ban = true;
							}else{
								$ban = false;
								$xan = true;
							}
						}
					}
				}
				if (!$ban and $xan) { $errorCampos .= $errorCampos5 . $form_val; }
			break;

			//Special Char (Con caracteres especiales)
			case "spc": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						$xan = $ban = true;
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						$xan = $ban = true;
					}
				}
				if (!$ban and $xan) { $errorCampos .= "Campo requerido  " . $form_val; }
			break;
			
			// Radio Button
			case "r": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						$xan = $ban = true;
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						$xan = $ban = true;
					}
				}
				if (!$ban and $xan) { $errorCampos .= $form_val; }
			break;

			// CheckBox
			case "cb": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						$xan = $ban = true;
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						$xan = $ban = true;
					}
				}
				if (!$ban and $xan) { $errorCampos .= $form_val; }
			break;

			// campos select option
			case "s": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						$xan = $ban = true;
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						$xan = $ban = true;
					}
				}
				if (!$ban and $xan) { $errorCampos .= "Debes seleccionar un elemento"; }
			break;

			// campos select option multiple
			case "sm": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						$xan = $ban = true;
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						$xan = $ban = true;
					}
				}
				if (!$ban and $xan) { $errorCampos .= "Debes seleccionar un elemento"; }
			break;

			//campos claves o de contrase?as
			case "c": 
				$val = $campo = explode("_",$form_index);

				$campo = explode("|",$val[0]);
				$val[0] = $campo[0];

				$clave1 = $campo[0]."|".$campo[1]."_".$val[1]."_".$val[2];
				$clave2 = "Core".$campo[1]."|".substr($campo[0],4)."_".$val[1]."_".$val[2];
				
				$valor1= trim($_REQUEST   [ $clave1 ]);
				$valor2= trim($_REQUEST   [ $clave2 ]);

				if($val[2] == "1"){
					if($valor1 != ""){
						if($valor2 != ""){
							if($valor1==$valor2){
								if(!isSpecialChar($form_val)){
									$xan = $ban = true;
								}else{
									$cxban = $ban = false;
									$xan = true;
								}
							}else{
								$errorCampos .= "Los Campos Claves no coinsiden. ";
								$ban = false;
								$xan = true;
							}
						}else{
							$form_val = "";
							$val[0] = "Core".$campo[1]."|".substr($campo[0],4);
							$errorCampos .= "El Campo \'Clave 2\' es obligatorio. ";
							$ban = false;
							$xan = true;
						}
					}else{
						$form_val = "";
						$val[0] = $campo[0]."|".$campo[1];
						$errorCampos .= "El Campo \'Clave 1\' es obligatorio. ";
						$ban = false;
						$xan = true;
					}
				}else{
					if($val[2] == "0"){
						if($valor1==$valor2){
							if(!isSpecialChar($form_val)){
								$ban = true;
							}else{
								$cxban = $ban = false;
								$xan = true;
							}
						}else{
							$errorCampos .= "Los Campos Claves no coinsiden. ";
							$ban = false;
							$xan = true;
						}
					}
				}

				if (!@$cxban === false and $xan) { $errorCampos .= $errorCampos3 . " campo clave";}
			break;

			 //campos fecha
			case "f": 
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(!isSpecialChar($form_val)){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}else{
						$xan = $ban = false;
					}
				}else{
					if($val[2] == "0"){
						if(!isSpecialChar(trim($form_val))){
							$xan = $ban = true;
						}else{
							$ban = false;
							$xan = true;
						}
					}
				}
				if (!$ban and $xan) { $errorCampos .= $errorCampos3 . str_replace("'", "\\'", $form_val); }
			break;

			// comparar fechas // compara que el segundo campo no sea menor que el primero....
			case "cf": 
				$val = $campo = explode("_",$form_index);

				$campo = explode("|",$val[0]);
				$val[0] = $campo[0];

				$clave1 = $campo[0]."|".$campo[1]."_".$val[1]."_".$val[2];
				$clave2 = "Core".$campo[1];
				
				$valor1 = strtotime( str_replace("/", "-", trim( $_REQUEST [ $clave1 ] ) ) );
				$valor2 = strtotime( str_replace("/", "-", trim( $_REQUEST [ $clave2 ] ) ) );

				if( $val[2] == "1" ){
					if( $valor1 != "" ){
						if( $valor2 != "" ){
							if( $valor1 <= $valor2 ){
								$xan = $ban = true;
								$_REQUEST [ "Core".$campo[1] ] = $_REQUEST [ $clave2 ];
							}else{
								$errorCampos .= "Error: la fecha del segundo campo no puede ser menor al del primero \\n\\n Valores Agregados:  ".$_REQUEST [ $clave1 ]." ".$_REQUEST [ $clave2 ];
								$val[0] = "Core".$campo[1]."|".substr($campo[0],4);
								$form_val = $_REQUEST [ $clave2 ];
								$ban = false;
								$xan = true;
							}
						}else{
							$form_val = "";
							$val[0] = "Core".$campo[1]."|".substr($campo[0],4);
							$errorCampos .= "El Campo \'Fecha 2\' es obligatorio. \\n";
							$ban = false;
							$xan = true;
						}
					}else{
						$form_val = "";
						$val[0] = $campo[0]."|".$campo[1];
						$errorCampos .= "El Campo \'Fecha 1\' es obligatorio. \\n";
						$ban = false;
						$xan = true;
					}
				}else{
					if($val[2] == "0"){
						if($valor1 != ""){
							if($valor2 != ""){
								if( $valor1 <= $valor2 ){
									$xan = $ban = true;
									$_REQUEST [ "Core".$campo[1] ] = $_REQUEST [ $clave2 ];
								}else{
									$errorCampos .= "Error: la fecha del segundo campo no puede ser menor al del primero \\n\\n Valores Agregados:  ".$_REQUEST [ $clave1 ]." ".$_REQUEST [ $clave2 ];
									$val[0] = "Core".$campo[1]."|".substr($campo[0],4);
									$form_val = $_REQUEST [ $clave2 ];
									$ban = false;
									$xan = true;
								}
							}else{
								$form_val = "";
								$val[0] = "Core".$campo[1]."|".substr($campo[0],4);
								$errorCampos .= "El Campo \'Fecha 2\' es obligatorio. \\n";
								$ban = false;
								$xan = true;
							}
						}else{
							if($valor2 != ""){
								$form_val = "";
								$val[0] = $campo[0]."|".$campo[1];
								$errorCampos .= "El Campo \'Fecha 1\' es obligatorio. \\n";
								$ban = false;
								$xan = true;
							}else{
								$xan = $ban = true;
							}
						}
					}
				}
				if (!@$ban === false and $xan) { $errorCampos .= $errorCampos3 . " campo clave";}
			break;
			
			// campos email
			case "e": 
				$exban = $eyban = true;
				if($val[2] == "1"){
					if(trim($form_val) != ""){
						if(valEmail(trim($form_val))){
							if(!isSpecialChar($form_val)){
								$xan = $ban = true;
							}else{
								$ban = $exban = false;
								$xan = true;
							}
						}else{
							$ban = $eyban = false;
							$xan = true;
						}
					}else{
							$xan = $ban = false;
						}
				}else{
					if($val[2] == "0"){
						if(trim($form_val) != ""){
							if(valEmail(trim($form_val))){
								if(!isSpecialChar($form_val)){
									$xan = $ban = true;
								}else{
									$ban = $exban = false;
									$xan = true;
								}
							}else{
								$ban = $eyban = false;
								$xan = true;
							}
						}
					}
				}
				if (!@$exban and $xan) { $errorCampos .= $errorCampos3 . $form_val; }
				if (!@$eyban and $xan) { $errorCampos .= $errorCampos7 . $form_val; }
			break;
			
			default:
				$ban     = true;
				$default = true;
				$post   [ $form_index ] = (trim($form_val));
				$request[ $form_index ] = (trim($form_val));
			break; 
		}
		
		/** Elimina el borde rojo del campo **/
		if ($ban) {
			if (!$default) {
				$post   [ $val[ 0 ] ] = (trim($form_val));
				$request[ $val[ 0 ] ] = (trim($form_val));
			}
		} else {
			if(!$ban_echo){

				if(preg_match('/Core/i',$val[ 0 ],$match)){
					$val[ 0 ] = substr($val[ 0 ],4);
				}
				echo /** Enfocamos el campo que contiene el errer... **/
				"<script>".
					"try{ document.forms['".@$_POST["form_name"]."'].elements['".$val[ 0 ]."_".$val[ 1 ]."_".$val[ 2 ]."'].value = '".str_replace("'", "\\'", utf8_encode($form_val))."'; }catch(err){};".
					"try{ document.forms['".@$_POST["form_name"]."'].elements['".$val[ 0 ]."_".$val[ 1 ]."_".$val[ 2 ]."'].style.border = '2px solid #FF2D2D'; }catch(err){};".
					"try{ document.forms['".@$_POST["form_name"]."'].elements['".$val[ 0 ]."_".$val[ 1 ]."_".$val[ 2 ]."'].focus(); }catch(err){};".
				"</script>";
			}
			break;
		}
	}endforeach;

	if($len){
		$_POST    = $post;
		$_REQUEST = $request;
		if(!$ban_echo){
			if($ban){
				echo 
				"<script>".
					"try{ ".
						"f_request = true;".
						"setTimeout(function(){".
							"try{ document.forms['".@$_POST["form_name"]."'].reset(); }catch(err){}".
							"try{ for(var i = 0; i < document.forms['".@$_POST["form_name"]."'].length ; i++){".
								"document.forms['".@$_POST["form_name"]."'].elements[ i ].style.border = '';".
							"}; }catch(err){}".
							@$_POST["function"].";".
						"},10);".
					"}catch(err){}".
				"</script>";
				return $post;
			}else{
				if (!$xan) { $errorCampos = $errer; }
				echo 
				'<div class="color_rojo" style="margin: 5px 0 0 15px;">'.
					'<img src="../../../img/exclamation.png"/>'.
					str_replace("Informe de Error:", "", utf8_encode($errorCampos)).
				'</div>';
	
				echo 
				"<script>".
					"try{ ".
						"f_request = false;".
						"alert('".utf8_encode($errorCampos)."');".
						"setTimeout(function(){".
							@$_POST["function"].";".
						"},10);".
					"}catch(err){}".
				"</script>";
				if($ban_exit) exit;
				return false;
			}
		}else{
			if(!$ban){
				if (!$xan) { $errorCampos = $errer; }
				echo 
				"<script>".
					"try{ ".
						"f_request = false;".
						"alert('".utf8_encode($errorCampos)."');".
						"setTimeout(function(){".
							@$_POST["function"].";".
						"},10);".
						"window.close();".
					"}catch(err){}".
				"</script>";
				if($ban_exit) exit;
			}
		}
	}
}



// formulario($_POST);
// print_r($_POST);
// print_r($_REQUEST);
function random($length) {
      $chars = "AbcdefghiJklmnoQqrsTuvWxyz23456789";
	  $str= "";
	  $size= strlen ($chars);
	  for ($i=0;$i<$length;$i++){
          $str .= $chars[rand(0, $size-1)];
	  }
	 
	  return $str;
	  
}
 ?>